package com.huashi.dealer.modular.business.goods.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * Store端商品详情VO
 *
 * @author 谭陈强
 * @since 2025-08-07
 */
@Data
@Schema(description = "Store端商品详情VO")
public class StoreGoodsDetailVo {

    /**
     * 商品ID
     */
    @Schema(description = "商品ID")
    private Long goodsId;

    /**
     * 商品名称
     */
    @Schema(description = "商品名称")
    private String goodsName;

    /**
     * 商品卖点
     */
    @Schema(description = "商品卖点")
    private String sellingPoint;

    /**
     * 商品分类ID
     */
    @Schema(description = "商品分类ID")
    private Long categoryId;

    /**
     * 条形码
     */
    @Schema(description = "条形码")
    private String barCode;

    /**
     * 商品规格(10单规格 20多规格)
     */
    @Schema(description = "商品规格：10单规格，20多规格")
    private Integer specType;

    /**
     * 库存计算方式(10下单减库存 20付款减库存)
     */
    @Schema(description = "库存计算方式：10下单减库存，20付款减库存")
    private Integer deductStockType;

    /**
     * 商品详情
     */
    @Schema(description = "商品详情")
    private String content;

    /**
     * 初始销量
     */
    @Schema(description = "初始销量")
    private Integer salesInitial;

    /**
     * 实际销量
     */
    @Schema(description = "实际销量")
    private Integer salesActual;

    /**
     * 商品排序(数字越小越靠前)
     */
    @Schema(description = "商品排序(数字越小越靠前)")
    private Integer goodsSort;

    /**
     * 商品状态：10上架，20下架
     */
    @Schema(description = "商品状态：10上架，20下架")
    private Integer goodsStatus;

    /**
     * 是否新品：10是，20否
     */
    @Schema(description = "是否新品：10是，20否")
    private Integer isNewproduct;

    /**
     * 是否爆款：10是，20否
     */
    @Schema(description = "是否爆款：10是，20否")
    private Integer isHotsellingitem;

    /**
     * 分类：10商品，20赠品
     */
    @Schema(description = "分类：10商品，20赠品")
    private Integer isType;

    /**
     * 软删除
     */
    @Schema(description = "软删除")
    private Integer isDelete;

    @Schema(description = "赠品数量")
    private Integer giftStockNum;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    /**
     * 商品图片
     */
    @Schema(description = "商品图片")
    private List<GoodsImageVo> image;

    /**
     * 商品规格
     */
    @Schema(description = "商品规格")
    private List<GoodsSkuVo> sku;

    /**
     * 商品分类
     */
    @Schema(description = "商品分类")
    private CategoryVo category;

    /**
     * 商品图片VO
     */
    @Data
    @Schema(description = "商品图片VO")
    public static class GoodsImageVo {
        /**
         * 图片ID
         */
        @Schema(description = "图片ID")
        private Long imageId;

        /**
         * 文件路径
         */
        @Schema(description = "文件路径")
        private String filePath;
    }

    /**
     * 商品规格VO
     */
    @Data
    @Schema(description = "商品规格VO")
    public static class GoodsSkuVo {
        /**
         * 规格ID
         */
        @Schema(description = "规格ID")
        private Long goodsSkuId;

        /**
         * 规格名称
         */
        @Schema(description = "规格名称")
        private String specSkuId;

        /**
         * 商品价格
         */
        @Schema(description = "商品价格")
        private BigDecimal goodsPrice;

        /**
         * 商品单价
         */
        @Schema(description = "商品单价")
        private BigDecimal goodsMoney;

        /**
         * 商品划线价
         */
        @Schema(description = "商品划线价")
        private BigDecimal linePrice;

        /**
         * 商品库存
         */
        @Schema(description = "商品库存")
        private Integer stockNum;

        /**
         * 商品重量
         */
        @Schema(description = "商品重量")
        private Double goodsWeight;
        /**
         * 商品规格
         */
        @Schema(description = "商品规格")
        private String spec;
        /**
         * 商品销量
         */
        @Schema(description = "商品销量")
        private Integer goodsSales;

        @Schema(description = "商品编码")
        private String goodsNo;
    }

    /**
     * 商品分类VO
     */
    @Data
    @Schema(description = "商品分类VO")
    public static class CategoryVo {
        /**
         * 分类ID
         */
        @Schema(description = "分类ID")
        private Long categoryId;

        /**
         * 分类名称
         */
        @Schema(description = "分类名称")
        private String name;
    }
}
